package edu.hubu.book.service.impl;

import edu.hubu.book.dao.UserDao;
import edu.hubu.book.domain.User;
import edu.hubu.book.service.UserService;
import edu.hubu.book.utils.CodeUtil;
import edu.hubu.book.utils.MailUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 用户业务层
 */

@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Autowired
    private CodeUtil codeUtil;

    @Autowired
    private MailUtils mailUtils;

    /**
     * 注册
     * @param user
     * @return
     */
    public boolean regist(User user) {
        //根据用户名查询用户对象，如果用户名存在则注册失败反之注册成功
        User u = userDao.findByUsername(user.getUsername());
        //判断u是否为null
        if(u != null){
            //用户名存在，注册失败
            return false;
        }
        //用户不存在注册成功
        //保存用户信息
        //设置激活码，唯一字符串
        user.setCode(codeUtil.getUuid());
        //设置最初激活状态为N，即未激活
        user.setStatus("N");
        userDao.save(user);

        //3.激活邮件发送
        String content="<a href='http://localhost:8080/user/active?code="+user.getCode()+"'>点击激活图书管理系统账号</a>";
        mailUtils.sendMail(user.getEmail(),content,"激活邮件");

        return true;
    }


    /**
     * 激活
     * @param code
     * @return
     */
    public boolean active(String code) {
        //根据激活码查询用户对象
        User user = userDao.findByCode(code);
        if(user != null){
            //如果激活码存在则使其状态为Y，即为激活状态
            userDao.updateStatus(user);
            return true;
        }else{
            return false;
        }
    }


    /**
     * 登录
     * @param user
     * @return
     */
    public User login(User user) {
        //返回是否存在用户名和密码对应的用户
        return  userDao.findByUsernameAndPassword(user);
    }


}
